package com.czy;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 主题的生产者
 *
 */
public class TestTopicProducer {


	private static String brokerURL="tcp://127.0.0.1:61616";
	private static String topicName="topic-hello";
	
	public static void main(String[] args) throws Exception {

		ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(brokerURL);
		Connection connection = factory.createConnection();
		connection.start();

		//2、生产者提交时的事务设置：
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Topic topic = session.createTopic(topicName);
		
		MessageProducer messageProducer = session.createProducer(topic);
		//1、设置当前生产者发送的所有消息的持久性-(队列)默认为持久消息
		//1、非持久的topic没有意义，因为发布订阅模式是先启动订阅再启动生产，消息已经被消费了。如果先启动生产者后启动订阅者，消息会被当作废消息
//		messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);

		for (int i = 1; i <=10; i++) {
			TextMessage message = session.createTextMessage("topic-message:"+i);
			
			//1、设置当前消息的持久性-(队列)默认为持久消息
			//1、非持久的topic没有意义，因为发布订阅模式是先启动订阅再启动生产，消息已经被消费了。如果先启动生产者后启动订阅者，消息会被当作废消息
//			message.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
//			message.setJMSExpiration(10000);//设置过期时间
			message.setJMSMessageID("msgid"+i);
			
			messageProducer.send(message);
		}
		
		messageProducer.close();
		session.close();
		connection.close();
		System.out.println("主题消费发送完成");
		
	}

}
